﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using BattleCity;
using Fiuba.Algo3.Titiritero.Vista;
using Fiuba.Algo3.Titiritero;
using System.Xml;
namespace BattleCity
{
    
    public abstract class Tanque : ObjetoActivo
    {
        //atributos
        protected Arma arma;
        
        //Metodos Abstractos
        abstract public int getPuntos();

        //Metodos
        override public bool ImpactaCon(Objeto objeto)
        {
             return objeto.ImpactaCon(this);
        }
        override public bool ImpactaCon(Tanque tanque)
        {
            this.Retroceder();
            return true;
        }
        override public bool ImpactaCon(Arma arma){return false; }
        override public bool ImpactaCon(Proyectil proyectil)
        {
            return proyectil.ImpactaCon(this);
        }
        override public bool ImpactaCon(Muro muro)
        {
            this.Retroceder();
            return true;
        }
        override public bool ImpactaCon(Base baseob) 
        {
            this.Retroceder();
            return true;
        }
        override public bool ImpactaCon(BonusVida bonus) 
        {
            return false;
        }
        override public bool ImpactaCon(BonusVelocidad bonus)
        {
            return false;
        }
        override public bool ImpactaCon(Teletransportador bonus) { return false; }

        //Metodo llamado por el escenario cuando el objeto se va del terreno
        override public void FueraDelTerreno()
        {
            this.Retroceder();
        }
	
	    public override void Persistir(XmlDocument xml, XmlNode subnodo)
        {

            XmlNode principal = xml.CreateElement(this.nombre);

            if (X != -1) //Si aun no fue lanzado al escenario, tiene pos -1
            {
                XmlNode posicion = xml.CreateElement("Posicion");
                XmlNode x = xml.CreateElement("X");
                XmlNode y = xml.CreateElement("Y");

                x.InnerText = X.ToString();
                y.InnerText = Y.ToString();

                posicion.AppendChild(x);
                posicion.AppendChild(y);

                principal.AppendChild(posicion);
            }
            subnodo.AppendChild(principal);
        }        

        
    }
}
